/**
 * @file demo125.c
 * @author WRS (1352509846@qq.com)
 * @brief 验证回文串
 * 给定一个字符串，验证它是否是回文串，只考虑字母和数字字符，
 * 可以忽略字母的大小写
 * @version 0.1
 * @date 2021-08-30
 * 
 * @copyright Copyright (c) 2021
 * 
 */

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdbool.h>


bool isPalindrome(char * s)
{
    int n = 0;

    if(s == NULL)    return 0;
    else if(strlen(s)==0)   return 1;

    n = strlen(s)-1;
    for(int i=0;i<n;)
    {
        if(isalnum(s[i])==0)
        {
            i++;
            continue;
        }
        if(isalnum(s[n])==0)
        {
            n--;
            continue;
        }
        if(tolower(s[i])!=tolower(s[n]))
        {    
            return false;     
        }
        i++,n--;     
    }
    return true;
}

int main(int argc, char const *argv[])
{
    char str[50] = {0};
    printf("请输入字符串：");
    while(1)
    {
        scanf("%s",str);
        printf("输入的字符串是%s\n",str);
        if(isPalindrome(str)==true)
            printf("是回文串\n");
        else 
            printf("不是回文串\n");
    }

    return 0;
}
